import { persistStore, persistReducer } from 'redux-persist';
import storage from 'redux-persist/es/storage/session';

// 定义测试全局变量
window.DEV_URL = `http:${process.env.SOCKET_SERVER?.split(":")[1]}`;

/**
 * 用于集成 redux
 * 使用redux-persist 缓存 redux信息
 * https://github.com/umijs/umi/issues/249
 */
// const persistConfig = {
//   key: 'redux-persist',
//   storage,
//   whitelist: [],
// };
// const persistEnhancer = () => (createStore) => (reducer, initialState, enhancer) => {
//   const store = createStore(persistReducer(persistConfig, reducer), initialState, enhancer);
//   const persist = persistStore(store);
//   return { ...store, persist };
// };
/* eslint-disable */
// export const dva = {
//   config: {
//     onError(e) {
//       e.preventDefault();
//     },
//     extraEnhancers: [persistEnhancer()],
//   },
// };
/**
 * 用于运行时修改路由。
 * @param {Array} routes 路由配置
 * 可能的场景：
 * 和 render 配合使用，请求服务端根据响应动态更新路由
 * 修改全部路由，加上某个前缀
 * 注：同样适用约定式路由
 * 直接修改 routes 就好，不要返回新的路由对象
 */
// export function patchRoutes(routes) {
//   console.log('用于运行时修改路由：', routes);
// }

/**
 * 用于改写把整个应用 render 到 dom 树里的方法。
 * @param {Function} oldRender
 * 场景：渲染应用之前做权限校验，不通过则跳转到登录页
 */
// export function render(oldRender) {
//   console.log('用于改写把整个应用 render 到 dom 树里的方法：', oldRender);
//   oldRender();
// }

/**
 * 用于在初始加载和路由切换时做一些事情
 * @param {Object}
 * location：Object, history 提供的 location 对象
 * routes: Array, 路由配置
 * action: PUSH|POP|REPLACE|undefined，初次加载时为 undefined
 * 可能的场景：埋点统计
 * 注：初次加载时也会执行，但 action 为 undefined
 */
// export function onRouteChange({ location, routes, action }) {
//   console.log('用于在初始加载和路由切换时做一些事情location：', location);
//   console.log('用于在初始加载和路由切换时做一些事情routes：', routes);
//   console.log('用于在初始加载和路由切换时做一些事情action：', action);
// }

/**
 * 修改传给路由组件的 props
 * @param {Object} props  原始 props
 * @param {Object} {route，Object，当前路由配置}
 * 注：需返回新的 props
 */
// export function modifyRouteProps(props, { route }) {
//   console.log('修改传给路由组件的 props：', props);
//   console.log('修改传给路由组件的 route：', route);
//   return { ...props, foo: 'bar' };
// }
